Deciding which materialized views (MVs) and indexes should be created that will likely result in good performance for a user's database workload is an exponentially complex problem with respect to the number of queries, the number of tables, the number of updates, and the number of columns on the tables. Having some automated method that analyzes the workload and uses information about the system configuration and the database characteristics will allow the user to answer the problem. If the method is efficient, the user will be able to derive a good set of materialized views and indexes with low cost.